home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Windows Expert
/
Windows Expert.iso
/
utility
/
wgrep12.zip
/
GREPDLL.ZIP
/
GREPDLL.TXT
< prev
Wrap
Text File
|
1992-05-01
|
5KB
|
122 lines
Documentation for GREP.DLL
Written by: Chris Roberts 03/16/92
The Grep DLL was written to enhance Huw Millington's WinGrep program.
It allows the program access to a more robust set of GREP type
searches. But, it may be used as a grep engine to any program that has
the ability to call a DLL.
Version 1.0 of GREP.DLL has three functions. The first function
returns the version number. This is not of any importance... yet.
High-byte is major version number, low-byte is minor version number.
IE. 0x0100 = version 1.0, 0x0210 = 2.10.
WORD FAR PASCAL GrepVersion( void );
The second is the CompileGrep() function. This function is used to
compile a search string into a string used more efficiently by the
Grep Engine. It is passed a GrepString to compile, which it returns in
CompiledGrep. Passing a non-zero value for IgnoreCase will cause the
searches to ignore case, while a zero will force case-sensitivity.
int FAR PASCAL CompileGrep(char *GrepString, char *CompiledGrep,
char IgnoreCase );
It returns a zero (0) if the GrepString was valid, otherwise it
returns an error code reporting that the GrepString was NOT valid:
GCOMP_NO_ERROR No error occurred.
GCOMP_ILLEGAL_OCCURANCE_OP An *, +, or - appeared in an invalid
place. These cannot follow a ^ or a $.
GCOMP_UNKNOWN_TYPE Illegal type given for a ':' command.
The only valid types are 'a', 'd',
'n', and ' '.
GCOMP_NO_TYPE The ':' command was given as the last
character in a search string.
GCOMP_BAD_CLASS_TERMINATION A quoted character coammnd '\' without
a character to quote (ie. it is the
end of the string) was listed in a
class '[]'. ie. '[abc\'.
GCOMP_UNTERMINATED_CLASS There is no corresponding ']' with a
'['.
GCOMP_CLASS_TOO_LARGE A class is larger than 256 characters.
GCOMP_EMPTY_CLASS An empty class was specified. ie.
'AB[]YZ'.
The error code constants are defined in GREP.H. If the compile was
successful CompiledGrep now contains a grep string that may be used
for searches.
The third function in GREP.DLL is simply called Grep(). This, of
course, does all of the work of checking for a match.
int FAR PASCAL Grep( char *StringToSearch, char *CompiledGrep );
Grep() returns the position of the first character of the match (ie. 1
= first character), or zero (0) if there was no match.
The following commands are supported GREP commands:
\ The backslash quotes any character. This allows a search that
contains a character that is usually a GREP command.
Example:
\$ matches a dollar-sign.
^ A circumflex at the beginning of an expression matches the
beginning of a line.
$ A dollar-sign at the end of an expression matches the end of a
line.
? A question mark matches any SINGLE character (except "new-
line").
:_ A colon matches a class of characters described by the
following character:
:a matches any alphabetic (always ignores case)
:d matches digits
:n matches alphanumerics (always ignores case)
: matches spaces, tabs, and other control characters, such as
new-line.
* An expression followed by an asterisk matches ZERO or more
occurrances of that expression:
fo* matches f, fo, foo, etc
a*z matches az, abz, akfuhidfgnidhgz, etc
+ An expression followed by a plus sign matches ONE or more
occurrances of that expression:
fo+ matches fo, etc
- An expression followed by a minus sign optionally matches the
expression.
[] A string enclosed in square brackets matches any character in
that string, but no others. If the first character in the
string is a circumflex, the expression matches any character
except "new-line" and the characters in the string.
Example:
[xyz] matches xx, and zyx, while
[^xyz] matches abc but not axb.
A range of characters may be specified by two characters
separated by -. Note that, [a-z] matches alphabetics,
while [z-a] never matches.